Modern computing systems typically house enormous amounts of data and have large and varied workloads. Distributed computing is therefore becoming increasingly important, particularly in the context of enterprise computing systems.
In a distributed computing environment, computing resources may be shared among multiple users, user groups, tenants or the like.
Large distributed computing systems typically have a large quantity of computing resources and support large user groups. Such environments typically provide fault tolerance and cost savings by spreading resources among many users.
However, increasing the number of resources and users tends to likewise increase the number and complexity of demands for system resources, which presents scheduling and resource allocation challenges.
Moreover, distributed computing systems may have diverse users and groups of users, with varied needs for resource quantity, service level, resource availability and cost, among other criteria.